package com.eonmind.common.provider.entity.user;

import com.eonmind.common.contract.enums.DelEnum;
import com.eonmind.common.contract.enums.StatusEnum;
import com.eonmind.common.contract.timer.Timer;
import com.mongoplus.annotation.ID;
import com.mongoplus.annotation.collection.CollectionName;
import com.mongoplus.annotation.index.MongoIndex;
import com.mongoplus.enums.IdTypeEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.FieldNameConstants;

import java.util.List;

/**
 * @author Xujie
 * @since 2025/6/1 10:34
 **/

@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
@CollectionName("notificationType")
@FieldNameConstants
public class NotificationType {
    /**
     * 主键ID
     */
    @ID(type = IdTypeEnum.AUTO)
    private Long id;

    /**
     * 通知类型名称
     */
    private String noticeTypeName;

    /**
     * 通知类型描述
     */
    private String noticeTypeDesc;

    /**
     * 通知模板列表
     */
    private List<NoticeTemplate> noticeTemplates;

    /**
     * 状态(是否启用)
     * 0-禁用，1-启用
     */
    @MongoIndex
    private Integer status = StatusEnum.OPENED.getCode();

    /**
     * 删除状态
     */
    @MongoIndex
    private Integer del = DelEnum.UN_DEL.getCode();

    /**
     * 创建时间
     */
    private Long createTime = Timer.currentTimestamp();

    /**
     * 更新时间
     */
    private Long updateTime = Timer.currentTimestamp();

    /**
     * 通知模板内部类
     */
    @Data
    public static class NoticeTemplate {
        /**
         * 模板对应的通知类型
         * 0-站内信
         * 1-邮件
         * 2-短信
         */
        private Integer type;

        /**
         * 模板内容，内有占位符 {0}
         */
        private String noticeContent;
    }
}
